/**
 * gislin 2016年2月19日
 */
package com.btcode.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author gislin
 * 2016年2月19日
 */
public class StringUtil {

    public static boolean isEmpty(String value) {

        if (value == null || value.trim().equals("")) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * 判断一个字符串是否为null 或""或"  "
     */
    public static boolean IsNotNullOrEmpty(String value) {
        if (value != null && !"".equals(value.trim()) && !"null".equals(value.trim().toLowerCase())) {
            return true;
        }
        else {
            return false;
        }
    }

    public static Boolean hasText(String value) {
        if (value == null) {
            return false;
        }

        if (value.trim().equals("")) {
            return false;
        }

        return true;
    }

    public static String replaceLast(String value, String targetString, String resultString) {
        String result = value.replaceAll(targetString + "$", resultString);
        return result;
    }

    /**
     * 获取sql where 的 in 字符串 gislin 2016年8月15日
     */
    public static String getArrayStrForSql(String[] data, String fieldName) {

        StringBuffer result = new StringBuffer("(");

        for (int i = 0; i < data.length; i++) {
            result.append("@" + fieldName + i + ",");
        }
        return replaceLast(result.toString(), ",", ")");
    }

    /**
     * unicode转中文
     */
    public static String unicodeToString(String str) {

        Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");

        Matcher matcher = pattern.matcher(str);

        char ch;

        while (matcher.find()) {

            ch = (char) Integer.parseInt(matcher.group(2), 16);

            str = str.replace(matcher.group(1), ch + "");

        }

        return str;
    }

    /**
     * 是否是合法IP
     */
    public static boolean isIP(String value) {
        String ip = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}";
        Pattern pattern = Pattern.compile(ip);
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }

    /**
     * 是否是正整数
     */
    public static boolean isPositiveInteger(String value) {
        String regex = "[0-9]*";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }

    public static String bytesToString(byte[] bytes, String charSet) {
        try {
            String result = new String(bytes, charSet);
            return result;
        }
        catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static String bytesToString(byte[] bytes) {
        return bytesToString(bytes, "UTF-8");
    }

    public static byte[] getBytes(String value){
        try{
            if(value != null){
                return value.getBytes("UTF-8");
            }
            return null;
        }
        catch (Exception e){
            return null;
        }
    }
}
